#pragma once

#include "qlib/all.h"
#include "../../utils/render_ref.h"
#include "../../utils/render_line.h"

namespace qbe::FilletTool {
class Arc;
struct FilletToolModel {
  bool is_segment_mode = true;  //折线模式 false折线模式 true线段模式
  bool is_trim = true;          //是否修剪  true修剪 false不修剪
  double r = 5.0;               //倒角半径

  bool is_start = false;
  int line_1_use_point_index, line_2_use_point_index;  //针对没有相交的线段，离交点最远的点的索引，作为剪切折线的收尾点
  int line_1_no_use_point_index, line_2_no_use_point_index;  //距离交点更近点的索引，作为延伸线的起点

  qlib::Vec2d first_click_point, second_click_point;

  std::vector<std::shared_ptr<qlib::Path>> extend_lines;  //生成的延伸线
  std::vector<std::shared_ptr<Arc>> arcs;                 //生成的圆弧
  std::vector<bool> arc_dir;                              //生成圆弧的方向

  std::vector<qlib::Vec2d> segment;

  std::shared_ptr<utils::TempRender::RenderLine> render_line;

  std::shared_ptr<utils::TempRender::RenderLine> render_select_line;

  std::vector<entt::entity> select;

  QString trimString() {
    if (is_trim)
      return "修剪";
    else
      return "不修剪";
  }
};

}  // namespace qbe::move